去除陀螺仪数据中的高频噪声
本示例展示了如何使用EngeeDSP库中的MedianFilter块去除流数据中的高频辐射。
中值滤波器是一种非线性数字滤波技术,通常用于去除图像或信号中的噪声。
该算法的实现首先要连接这些库:
In [ ]:
Pkg.add(["DelimitedFiles"])
In [ ]:
import .EngeeDSP
using DelimitedFiles
using Plots
plotlyjs()
Out[0]:
从 JL 文件加载带有高频噪声的信号,这就是Julia源代码文件。
In [ ]:
matrix = readdlm("$(@__DIR__)/data.jl", '\t', Float64, '\n');
将文件编码为 714 个样本,使每列数据包含 10 个帧。
In [ ]:
In1 = map(Iterators.partition(axes(matrix,1), 714)) do cols
matrix[cols,:]
end
Out[0]:
在进行过滤时,系统使用的窗口长度为 10。
In [ ]:
var_median_fir = EngeeDSP.MedianFilter(WindowLength = 10)
EngeeDSP.setup!( var_median_fir, In1[1] )
Out1 = In1
for i = 1:10 # Обработка сигнала в цикле.
global gyroData = In1[i]
global filteredData = EngeeDSP.step!(var_median_fir,gyroData)
Out1[i] = filteredData
end
Out1 = vcat(Out1...)
Out[0]:
创建对象图,查看滤波后的输出,并与带噪声的输入信号进行比较。
In [ ]:
plot( [matrix[:,3],Out1[:,3]], ylims = [-300, 300], label=["Входной сигнал" "Отфильтрованный выход"], legendfontsize=6)
Out[0]:
输出
在本例中,我们演示了在Engee开发环境中使用扩展环境功能的附加库的可能性,即EngeeDSP库和在其中实现的MedianFilter。